/** 
* @Title: MemcacheService.java 
* @Package com.teamName.projectName.common 
* @Description: TODO(用一句话描述该文件做什么) 
* @author wuchaowen 511644784@qq.com 
* @date 2012-11-24 下午12:27:50 
* @version V1.0 
*/
package com.teamName.projectName.common;

import java.util.Map;

import com.sina.sae.memcached.SaeMemcache;

/** 
 * @ClassName: MemcacheService 
 * @Description: 分布式缓存服务，用来以共享的方式缓存用户的小数据
 * @author 511644784@qq.com
 * @date 2012-11-24 下午12:27:50 
 *  
 */
public class MemcacheService {
	 // 创建全局的唯一实例
    protected static SaeMemcache  smc = null;
    
    
    /**
     * 获取唯一缓存服务.
     */
    public static SaeMemcache getInstance() {
    	if (smc == null) {
            smc = new SaeMemcache("127.0.0.1", 11211);
            smc.init();
        }
        return smc;
    }
    
    /**
     * 向服务端新增一个值，只有当指定的key不存在时，才会增加这个值，否则增加失败
     * @param key
     * @param value
     * @return boolean
     */
    public boolean add(String key, Object value) {
        return smc.add(key, value);
    }
    
    /**
     * decr是和incr相反的操作,即对指定的数据内容进行减操作
     * 需要注意的是，操作的对象必须是32位的无符号,如果是非整数类型，则会被当做0处理。
     * @param key
     * @param value
     * @return int
     */
    public int decr(String key, int value) {
        return smc.incr(key, value);
    }
    
    /**
     * 对指定的数据内容进行增加操作，如对key为incr，值为11的数据，指定incr("incr",2)则结果为13。
     * 需要注意的是，操作的对象必须是32位的无符号,如果是非整数类型，则会被当做0处理。
     * @param key
     * @param value
     * @return int
     */
    public int incr(String key, int value) {
        return smc.incr(key, value);
    }
    
    /**
     * 
    * @Title: getMutiMap 
    * @Description: 查找多个key值 
    * @param @param key
    * @return Map<String,Object> 返回类型 
    * @throws
     */
    public Map<String, Object> getMutiMap(String[] key){
    	return smc.getMulti(key);
    }
    
    /**
     * 
    * @Title: del 
    * @Description:delete操作
    * @param @param key
    * @return boolean 返回类型 
    * @throws
     */
    public boolean del(String key){
    	return smc.delete(key);  
    }
    
    /**
     * 向服务端替换一个值，只有当指定的key存在时，才会替换这个值
     * @param key
     * @param value
     * @return boolean
     */
    public boolean replace(String key, Object value) {
        return smc.replace(key, value);
    }
    
    
    
    public static void main(String[] args) {
    	Map<String, Object> map =getInstance().getMulti(new String[]{"replace","add"});
    	
        System.out.print(map.size());
    }
}
